package com.net.oil.user.contract;

import com.net.oil.base.IBaseModel;
import com.net.oil.user.bean.CheckPhoneBean;
import com.net.oil.user.bean.RegisterBean;
import com.net.oil.user.bean.UserInfo;

/**
 * 作者：lch
 * 时间：2018/3/14:9:53
 * 邮箱：245850413@qq.com
 * 说明：
 */

public interface RegisterContract {
    interface Model extends IBaseModel {

        /**
         * 检查手机号是否已经注册
         *
         * @param phone 手机号
         */
        void checkPhone(String phone);

        /**
         * 获取手机验证码
         *
         * @param phone 手机号
         * @param ptt   是否是语音
         */
        void getPhoneCode(String phone, boolean ptt);

        /**
         * 验证手机验证码是否正确
         *
         * @param phone 手机号
         * @param code  验证码
         */
        void verifyCode(String phone, String code);

        /**
         * 注册
         *
         * @param phone           手机号
         * @param password        密码
         * @param nickname        昵称
         * @param invitationPhone 推荐人手机号
         */
        void register(String phone, String password, String nickname, String invitationPhone);

        /**
         * 登陆
         *
         * @param phone    手机号
         * @param password 密码
         */
        void login(String phone, String password);

        /**
         * 注册v2
         *
         * @param phone             手机号
         * @param password          密码
         * @param nickname              昵称
         * @param invitationPhone   推荐人手机号，没有则为空
         * @param email             邮箱，没有则为空
         */
        void registerV2(String phone, String password, String nickname, String invitationPhone, String email);
    }

    interface View {

        /**
         * 检查手机号是否注册成功
         *
         * @param checkPhoneBean 返回数据
         */
        void checkPhoneSuccess(CheckPhoneBean checkPhoneBean);

        /**
         * 检查手机号是否注册失败
         */
        void checkPhoneFailed();

        /**
         * 获取验证码成功
         */
        void getPhoneCodeSuccess();

        /**
         * 获取验证码失败
         */
        void getPhoneCodeFailed();

        /**
         * 验证手机验证码是否正确
         */
        void verifyCodeSuccess();

        /**
         * 验证手机验证码失败
         */
        void verifyCodeFailed();

        /**
         * 注册成功
         *
         * @param registerBean 返回的数据
         */
        void registerSuccess(RegisterBean registerBean);

        /**
         * 注册失败
         */
        void registerFailed();

        /**
         * 登陆成功
         *
         * @param userInfo 返回用户信息
         */
        void loginSuccess(UserInfo userInfo);

        /**
         * 登陆失败
         */
        void loginFailed();

        /**
         * 注册v2成功
         * @param userInfo  返回用户信息
         */
        void registerV2Success(UserInfo userInfo);

        /**
         * 注册v2失败
         */
        void registerV2Failed();
    }

    interface Presenter {
        /**
         * 检查手机号是否已经注册
         *
         * @param phone 手机号
         */
        void checkPhone(String phone);

        /**
         * 检查手机号是否注册成功
         *
         * @param checkPhoneBean 返回数据
         */
        void checkPhoneSuccess(CheckPhoneBean checkPhoneBean);

        /**
         * 检查手机号是否注册失败
         */
        void checkPhoneFailed();

        /**
         * 获取手机验证码
         *
         * @param phone 手机号
         * @param ptt   是否是语音
         */
        void getPhoneCodeCode(String phone, boolean ptt);

        /**
         * 获取验证码成功
         */
        void getPhoneCodeSuccess();

        /**
         * 获取验证码失败
         */
        void getPhoneCodeFailed();

        /**
         * 验证手机验证码是否正确
         *
         * @param phone 手机号
         * @param code  验证码
         */
        void verifyCode(String phone, String code);

        /**
         * 验证手机验证码是否正确
         */
        void verifyCodeSuccess();

        /**
         * 验证手机验证码失败
         */
        void verifyCodeFailed();

        /**
         * 注册
         *
         * @param phone           手机号
         * @param password        密码
         * @param nickname        昵称
         * @param invitationPhone 推荐人手机号
         */
        void register(String phone, String password, String nickname, String invitationPhone);

        /**
         * 注册成功
         *
         * @param registerBean 返回的数据
         */
        void registerSuccess(RegisterBean registerBean);

        /**
         * 注册失败
         */
        void registerFailed();

        /**
         * 登陆
         *
         * @param phone    手机号
         * @param password 密码
         */
        void login(String phone, String password);

        /**
         * 登陆成功
         *
         * @param userInfo 返回用户信息
         */
        void loginSuccess(UserInfo userInfo);

        /**
         * 登陆失败
         */
        void loginFailed();

        /**
         * 注册v2
         *
         * @param phone             手机号
         * @param password          密码
         * @param nickname              昵称
         * @param invitationPhone   推荐人手机号，没有则为空
         * @param email             邮箱，没有则为空
         */
        void registerV2(String phone, String password, String nickname, String invitationPhone, String email);

        /**
         * 注册v2成功
         * @param userInfo  返回用户信息
         */
        void registerV2Success(UserInfo userInfo);

        /**
         * 注册v2失败
         */
        void registerV2Failed();
    }
}
